import axios from 'axios';

/**
 * 植物服务类 - 处理植物状态变化和大模型交互
 */
export default {
  /**
   * 生成植物名称
   * @returns {Promise<string>} - 返回生成的植物名称
   */
  async generatePlantName() {
    try {
      const response = await axios.post('https://api.siliconflow.cn/v1/chat/completions', {
        //model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
        model: 'deepseek-ai/DeepSeek-V3',
        messages: [
          {
            role: 'system',
            content: '你是一个植物养成游戏的助手。请为用户的新植物生成一个可爱、简短、容易叫的中文名字，比如"豆豆"、"苗苗"、"绿绿",确保每次生成的名字不一样等。只返回名字，不要有任何解释或额外文字。'
          },
          {
            role: 'user',
            content: '请为我的新植物起一个可爱的名字。'
          }
        ],
        stream: false,
        max_tokens: 10,
        temperature: 0.7
      }, {
        headers: {
          Authorization: 'Bearer ' + process.env.VUE_APP_API_KEY,
          'Content-Type': 'application/json'
        }
      });
      
      // 获取模型返回的植物名称
      const name = response.data.choices[0].message.content.trim();
      return name;
      
    } catch (error) {
      console.error('生成植物名称失败:', error);
      // 返回默认名称
      const defaultNames = ['豆豆', '苗苗', '绿绿', '叶子', '花花', '草草', '小芽'];
      return defaultNames[Math.floor(Math.random() * defaultNames.length)];
    }
  },
  
  /**
   * 使用大模型分析文本内容，判断植物变异类型
   * @param {string} text - 用户输入的文本
   * @returns {Promise<string>} - 返回变异类型：normal, dirty, happy, code
   */
  async analyzeTextWithLLM(text) {
    try {
      const response = await axios.post('https://api.siliconflow.cn/v1/chat/completions', {
        model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
        messages: [
          {
            role: 'system',
            content: '你是一个文本分析助手，需要分析用户输入的文本情感倾向和内容类型。请根据以下规则返回分类结果：\n' +
              '1. 如果文本包含脏话、负面情绪或攻击性语言，返回 "dirty"\n' +
              '2. 如果文本包含积极、幸福、正能量的内容，返回 "happy"\n' +
              '3. 如果文本包含代码片段、编程语言关键字或技术术语，返回 "code"\n' +
              '4. 如果文本是中性的或无法判断，返回 "normal"\n' +
              '只返回一个单词作为结果，不要有任何解释或额外文字。'
          },
          {
            role: 'user',
            content: text
          }
        ],
        stream: false,
        max_tokens: 10,
        temperature: 0.3
      }, {
        headers: {
          Authorization: 'Bearer ' + process.env.VUE_APP_API_KEY,
          'Content-Type': 'application/json'
        }
      });
      
      // 获取模型返回的变异类型
      const result = response.data.choices[0].message.content.trim().toLowerCase();
      
      // 确保返回的是有效的变异类型
      const validVariants = ['normal', 'dirty', 'happy', 'code'];
      return validVariants.includes(result) ? result : 'normal';
      
    } catch (error) {
      console.error('调用大模型接口失败:', error);
      return 'normal'; // 默认返回正常状态
    }
  },

  /**
   * 生成植物成熟期的祝贺消息
   * @returns {Promise<string>} - 返回祝贺消息
   */
  async generateMatureMessage(plantState) {
    try {
      const response = await axios.post('https://api.siliconflow.cn/v1/chat/completions', {
        model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
        messages: [
          {
            role: 'system',
            content: '你是一个虚拟植物养成游戏的助手。用户的植物已经成熟了，请生成一条简短的祝贺消息，感谢用户的精心照料。消息应该温暖、积极，不超过50个字。'
          },
          {
            role: 'user',
            content: `我的${this.getVariantName(plantState.variant)}植物已经成熟了，生长值为${plantState.growthValue}，浇水次数为${plantState.waterCount}。`
          }
        ],
        stream: false,
        max_tokens: 100,
        temperature: 0.7
      }, {
        headers: {
          Authorization: 'Bearer ' + process.env.VUE_APP_API_KEY,
          'Content-Type': 'application/json'
        }
      });
      
      return response.data.choices[0].message.content.trim();
      
    } catch (error) {
      console.error('生成成熟期消息失败:', error);
      return '恭喜！你的植物已经成熟了！感谢你的精心照料！';
    }
  },

  /**
   * 生成植物死亡的消息
   * @param {string} reason - 死亡原因
   * @returns {Promise<string>} - 返回死亡消息
   */
  async generateDeathMessage(reason) {
    try {
      const response = await axios.post('https://api.siliconflow.cn/v1/chat/completions', {
        model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
        messages: [
          {
            role: 'system',
            content: '你是一个虚拟植物养成游戏的助手。用户的植物因为特定原因死亡了，请生成一条简短的消息，让用户感到一些挫败感，但同时鼓励他们重新开始。消息应该不超过50个字。'
          },
          {
            role: 'user',
            content: `我的植物因为${reason}死亡了。`
          }
        ],
        stream: false,
        max_tokens: 100,
        temperature: 0.7
      }, {
        headers: {
          Authorization: 'Bearer ' + process.env.VUE_APP_API_KEY,
          'Content-Type': 'application/json'
        }
      });
      
      return response.data.choices[0].message.content.trim();
      
    } catch (error) {
      console.error('生成死亡消息失败:', error);
      return `你的植物因${reason}而死亡了...别灰心，重新开始吧！`;
    }
  },

  /**
   * 生成植物人格报告
   * @param {Object} plantState - 植物状态
   * @returns {Promise<Object>} - 返回人格报告
   */
  async generatePersonalityReport(plantState) {
    try {
      const response = await axios.post('https://api.siliconflow.cn/v1/chat/completions', {
        model: 'deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',
        messages: [
          {
            role: 'system',
            content: '你是一个虚拟植物养成游戏的助手。请根据用户植物的状态生成一份简短的"植物人格报告"，描述这种植物状态反映的用户性格特点。报告应该有趣、积极，不超过200字。'
          },
          {
            role: 'user',
            content: `我的植物状态：
              - 变异类型：${this.getVariantName(plantState.variant)}
              - 生长值：${plantState.growthValue}
              - 浇水次数：${plantState.waterCount}
              - 输入次数：${plantState.inputHistory.length}
              请生成一份植物人格报告。`
          }
        ],
        stream: false,
        max_tokens: 300,
        temperature: 0.7
      }, {
        headers: {
          Authorization: 'Bearer ' + process.env.VUE_APP_API_KEY,
          'Content-Type': 'application/json'
        }
      });
      
      return {
        title: '植物人格报告',
        content: response.data.choices[0].message.content.trim(),
        plantState: {
          variant: plantState.variant,
          growthValue: plantState.growthValue,
          waterCount: plantState.waterCount,
          inputCount: plantState.inputHistory.length
        }
      };
      
    } catch (error) {
      console.error('生成人格报告失败:', error);
      return {
        title: '植物人格报告',
        content: this.getDefaultPersonality(plantState.variant),
        plantState: {
          variant: plantState.variant,
          growthValue: plantState.growthValue,
          waterCount: plantState.waterCount,
          inputCount: plantState.inputHistory.length
        }
      };
    }
  },

  /**
   * 获取变异类型的中文名称
   * @param {string} variant - 变异类型
   * @returns {string} - 变异类型的中文名称
   */
  getVariantName(variant) {
    const variantNames = {
      normal: '普通',
      dirty: '刺状',
      happy: '幸福',
      code: '代码'
    };
    return variantNames[variant] || '普通';
  },

  /**
   * 获取默认的性格描述（当API调用失败时使用）
   * @param {string} variant - 变异类型
   * @returns {string} - 默认的性格描述
   */
  getDefaultPersonality(variant) {
    const personalities = {
      normal: '你是一个平衡稳定的人，善于保持中立态度。你不偏不倚，理性客观，能够在各种情况下保持冷静。',
      dirty: '你有时会表现出尖锐的一面，但这也是你保护自己的方式。你直言不讳，敢于表达自己的想法，不惧怕冲突。',
      happy: '你是一个乐观积极的人，总是能看到事物美好的一面。你善良、热情，能够在困境中找到希望，是朋友眼中的阳光。',
      code: '你有着逻辑思维和创造力，善于解决复杂问题。你理性、专注，喜欢探索新知识，对技术和创新充满热情。'
    };
    
    return personalities[variant] || personalities.normal;
  }
};